﻿using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Code4WP7SDK;

namespace LuWeibo.Models
{
    public class User : BaseModel
    {
        private string _id;//用户UID
        private string _idstr;
        private string _screen_name; //用户昵称
        private string _name;//友好显示名称
        private string _province;//用户所在地区ID
        private string _city;//用户所在城市ID
        private string _location;//用户所在地
        private string _description;//用户描述
        private string _url;//用户博客地址
        private string _profile_image_url;//用户头像地址
        private string _profile_url;
        private string _domain;//用户的个性化域名
        private string _weihao;
        private string _gender;//性别，m：男、f：女、n：未知
        private int _followers_count;//粉丝数
        private int _friends_count;//关注数
        private int _statuses_count;//微博数
        private int _favourites_count;//收藏数
        private string _created_at;//创建时间
        private bool _following;//当前登录用户是否已关注该用户
        private bool _allow_all_act_msg;//是否允许所有人给我发私信
        private bool _geo_enabled;//是否允许带有地理信息
        private bool _verified;//是否是微博认证用户，即带V用户
        private string _remark;//
        private bool _allow_all_comment;//是否允许所有人对我的微博进行评论
        private string _avatar_large;//用户大头像地址
        private string _verified_reason;//认证原因
        private bool _follow_me;//该用户是否关注当前登录用户
        private int _online_status;//用户的在线状态，0：不在线、1：在线
        private int _bi_followers_count;//用户的互粉数

        public string id
        {
            get { return _id; }
            set
            {
                _id = value;
                this.NotifyPropertyChanged(p => p.id);
            }
        }
        public string idstr
        {
            get { return _idstr; }
            set
            {
                _idstr = value;
                this.NotifyPropertyChanged(p => p.idstr);
            }
        }
        public string screen_name
        {
            get { return _screen_name; }
            set
            {
                _screen_name = value;
                this.NotifyPropertyChanged(p => p.screen_name);
            }
        }
        public string name
        {
            get { return _name; }
            set
            {
                _name = value;
                this.NotifyPropertyChanged(p => p.name);
            }
        }

        public string province
        {
            get { return _province; }
            set
            {
                _province = value;
                this.NotifyPropertyChanged(p => p.province);
            }
        }

        public string city
        {
            get { return _city; }
            set
            {
                _city = value;
                this.NotifyPropertyChanged(p => p.city);
            }
        }

        public string location
        {
            get { return _location; }
            set
            {
                _location = value;
                this.NotifyPropertyChanged(p => p.location);
            }
        }

        public string description
        {
            get { return _description; }
            set
            {
                _description = value;
                this.NotifyPropertyChanged(p => p.description);
            }
        }

        public string url
        {
            get { return _url; }
            set
            {
                _url = value;
                this.NotifyPropertyChanged(p => p.url);
            }
        }

        public string profile_image_url
        {
            get { return _profile_image_url; }
            set
            {
                _profile_image_url = value;
                this.NotifyPropertyChanged(p => p.profile_image_url);
            }
        }
        public string profile_url
        {
            get { return _profile_url; }
            set
            {
                _profile_url = value;
                this.NotifyPropertyChanged(p => p.profile_url);
            }
        }
        public string domain
        {
            get { return _domain; }
            set
            {
                _domain = value;
                this.NotifyPropertyChanged(p => p.domain);
            }
        }
        public string weihao
        {
            get { return _weihao; }
            set
            {
                _weihao = value;
                this.NotifyPropertyChanged(p => p.weihao);
            }
        }
        public string gender
        {
            get { return _gender; }
            set
            {
                _gender = value;
                this.NotifyPropertyChanged(p => p.gender);
            }
        }

        public int followers_count
        {
            get { return _followers_count; }
            set
            {
                _followers_count = value;
                this.NotifyPropertyChanged(p => p.followers_count);
            }
        }

        public int friends_count
        {
            get { return _friends_count; }
            set
            {
                _friends_count = value;
                this.NotifyPropertyChanged(p => p.friends_count);
            }
        }

        public int statuses_count
        {
            get { return _statuses_count; }
            set
            {
                _statuses_count = value;
                this.NotifyPropertyChanged(p => p.statuses_count);
            }
        }

        public int favourites_count
        {
            get { return _favourites_count; }
            set
            {
                _favourites_count = value;
                this.NotifyPropertyChanged(p => p.favourites_count);
            }
        }

        public string created_at
        {
            get { return _created_at; }
            set
            {
                _created_at = value;
                this.NotifyPropertyChanged(p => p.created_at);
            }
        }

        public bool following
        {
            get { return _following; }
            set
            {
                _following = value;
                this.NotifyPropertyChanged(p => p.following);
            }
        }

        public bool allow_all_act_msg
        {
            get { return _allow_all_act_msg; }
            set
            {
                _allow_all_act_msg = value;
                this.NotifyPropertyChanged(p => p.allow_all_act_msg);
            }
        }

        public string remark
        {
            get { return _remark; }
            set
            {
                _remark = value;
                this.NotifyPropertyChanged(p => p.remark);
            }
        }

        public bool geo_enabled
        {
            get { return _geo_enabled; }
            set
            {
                _geo_enabled = value;
                this.NotifyPropertyChanged(p => p.geo_enabled);
            }
        }

        public bool verified
        {
            get { return _verified; }
            set
            {
                _verified = value;
                this.NotifyPropertyChanged(p => p.verified);
            }
        }

        public bool allow_all_comment
        {
            get { return _allow_all_comment; }
            set
            {
                _allow_all_comment = value;
                this.NotifyPropertyChanged(p => p.allow_all_comment);
            }
        }

        public string avatar_large
        {
            get { return _avatar_large; }
            set
            {
                _avatar_large = value;
                this.NotifyPropertyChanged(p => p.avatar_large);
            }
        }

        public string verified_reason
        {
            get { return _verified_reason; }
            set
            {
                _verified_reason = value;
                this.NotifyPropertyChanged(p => p.verified_reason);
            }
        }

        public bool follow_me
        {
            get { return _follow_me; }
            set
            {
                _follow_me = value;
                this.NotifyPropertyChanged(p => p.follow_me);
            }
        }

        public int online_status
        {
            get { return _online_status; }
            set
            {
                _online_status = value;
                this.NotifyPropertyChanged(p => p.online_status);
            }
        }

        public int bi_followers_count
        {
            get { return _bi_followers_count; }
            set
            {
                _bi_followers_count = value;
                this.NotifyPropertyChanged(p => p.bi_followers_count);
            }
        }
    }
}
